A service-level agreement (SLA) between a storage system and a storage user defines the quality of service (QoS) that is guaranteed to the storage user and particularity defines the performance, such as: response time, number of I/O operations per second (IOPS), and throughput (megabytes per second).
The ability of the storage system to provide certain levels of performance depends on the hardware being used and the manner in which the hardware is utilized.
One example of hardware utilization that can have a dramatic impact on the performance is using a cache memory for storing mostly used data. When data requested to be read is found in the cache (cache hit), the response time is almost instantaneous. When the data requested to be read is not found in the cache (cache miss), the data is read from a storage drive, which is much slower than the cache and thus the response time, when reading from the storage drive, is significantly longer than the response time of requests that are served from the cache.
Hit ratio is a term that defines the percentage of I/O requests served from the cache comparing to the total served I/O requests.
During a cache miss, the data that is read from the slower storage drive is usually placed in the cache, since this data is likely to be requested by subsequent requests. Since cache memories are relatively small, there is usually a need to evict other data before caching the data that was just read.
The technique used to select the data to be evicted is known as “replacement policy”. A popular replacement policy is called “least recently used” (LRU), where the least recently used data is evicted first.
Various techniques allow data associated with SLAs of higher levels to be cached longer than data of lower level SLAs. However, there is no guarantee that the longer cached data will improve the performance, as the performance also depends on the access pattern of the specific storage user. For example, if newly cached data is used by a specific storage user only in the first few minutes after the first request to read the data, then caching the data for extra two hours will not improve the performance for this specific storage user, and can further degrade the performance of other users, that need longer caching and could use the wasted cache space.
When different SLAs are employed and assigned to storage users with different access patterns, there is a need to define the duration of data caching, per storage user, in accordance with the access pattern of the storage user and the SLA assigned to the storage user.